package com.baomidou.mybatisplus.spring.annotation;

import java.lang.annotation.Annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.mapper.MapperFactoryBean;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.context.annotation.Import;

/**
 * Reference {@link MapperScan}
 * @author Yangtze
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Import(MapperEntityRegistrar.class)
@Repeatable(MapperEntityScans.class)
public @interface MapperEntityScan {
	  String[] value() default {};
	  Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;

	  Class<? extends Annotation> annotationClass() default Annotation.class;

	  Class<?> markerInterface() default Class.class;

	  String sqlSessionTemplateRef() default "";

	  String sqlSessionFactoryRef() default "";

	  Class<? extends MapperFactoryBean> factoryBean() default MapperFactoryBean.class;
}
